
#include "stdafx.h"
#include "WicBitmap.h"

//==============================================================================
// CWicBitmap
//==============================================================================
CWicBitmap::CWicBitmap()  : CWicBitmapSource()
{
    m_pIWICBitmap = NULL;
}

CWicBitmap::~CWicBitmap()
{
    if(m_pIWICBitmap)
    {
        m_pIWICBitmap->Release();
    }
    m_pIWICBitmap = NULL;
}

CWicBitmap::CWicBitmap(CWicBitmap const & objBitmap)  : CWicBitmapSource()
{
    m_pIWICBitmap = objBitmap.m_pIWICBitmap;
    m_pIWICBitmap->AddRef();
}

CWicBitmap& CWicBitmap::operator=(CWicBitmap const & objBitmap)
{
    if(m_pIWICBitmap)
    {
        m_pIWICBitmap->Release();
    }
    ClearPtr();
    m_pIWICBitmap = objBitmap.m_pIWICBitmap;
    m_pIWICBitmap->AddRef();
    return *this;
}

//==============================================================================
// IWICBitmap
//==============================================================================
HRESULT STDMETHODCALLTYPE CWicBitmap::Lock( 
    /* [in] */ __RPC__in const WICRect *prcLock,
    /* [in] */ DWORD flags,
    /* [out] */ __RPC__deref_out_opt IWICBitmapLock **ppILock)
{
    return m_pIWICBitmap->Lock(prcLock, flags, ppILock);
}

HRESULT STDMETHODCALLTYPE CWicBitmap::SetPalette( 
    /* [in] */ __RPC__in_opt IWICPalette *pIPalette)
{
    return m_pIWICBitmap->SetPalette(pIPalette);
}

HRESULT STDMETHODCALLTYPE CWicBitmap::SetResolution( 
    /* [in] */ double dpiX,
    /* [in] */ double dpiY)
{
    return m_pIWICBitmap->SetResolution(dpiX, dpiY);
}


